package com.freemalll.merchant.annotation.common;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author luohui
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface QueryCondition {

    /**
     * 数据库列名
     * @return
     */
    String column() default "";

    /**
     * 分隔符，读取字符串组内容
     */
    String separator() default ",";

    /**
     * 另一个类中的属性名称,支持多级获取,以小数点隔开
     */
    String targetAttr() default "";

    /**
     * 方法
     * @return
     */
    SearchType func() default SearchType.EQ;


    enum SearchType {
        /**
         * 等于
         */
        EQ,
        /**
         * 大于等于
         */
        GE,
        /**
         * 大于
         */
        GT,
        /**
         * 小于等于
         */
        LE,
        /**
         * 小于
         */
        LT,
        /**
         * 不等于
         */
        NE,
        /**
         * 不为空
         */
        NOT_NULL,
        /**
         * 中模糊查询
         */
        INNER_LIKE,
        /**
         * 左模糊查询
         */
        LEFT_LIKE,
        /**
         * 右模糊查询
         */
        RIGHT_LIKE,
        /**
         * 包含
         */
        IN,
        /**
         * between
         */
        BETWEEN,
        /**
         * 查询时间
         */
        UNIX_TIMESTAMP
    }
}
